/*
 * Copyright (c) 2017, RockScript.io. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.rockscript.api.commands;

import io.rockscript.Engine;
import io.rockscript.api.Command;
import io.rockscript.api.model.Script;
import io.rockscript.api.model.ScriptVersion;
import io.rockscript.engine.impl.Parse;
import io.rockscript.engine.impl.ScriptStore;
import io.rockscript.http.servlet.BadRequestException;

/** Saves a new script version actives it, which means that is the
 * script version that will be used when starting a script execution
 * by name.
 *
 * Required fields: {@link #scriptText(String)}
 *
 * Example usage:
 * Use it like this:
 * <code>
 *   DeployScriptVersionResponse response = new DeployScriptVersionCommand()
 *     .name("Approval")
 *     .text("...the script text...")
 *     .execute(engine);
 * </code>
 *
 * DeployScriptVersionCommand has exactly the same configurations
 * fields as {@link SaveScriptVersionCommand}
 *
 * DeployScriptVersionCommand's are serializable with Gson.
 */
public class DeployScriptVersionCommand extends SaveScriptVersionCommand {

  @Override
  public String getType() {
    return "deployScript";
  }

  @Override
  protected boolean getActivate() {
    return true;
  }
}
